home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 5
/
Gekikoh Dennoh Club Vol. 5 (Japan).7z
/
Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin
/
internet
/
webx
/
webxp040.lzh
/
Source
/
micro_console.s
< prev
next >
Wrap
Text File
|
1998-08-01
|
6KB
|
306 lines
* micro_console.s
.include DOSCALL.MAC
.include IOCSCALL.MAC
.xdef _McInit,_McPrint,_McDbPrint,_McCursorTop
.xref put_6x12_jt,put_12x12_jt
.xref show_mouse_cursor,hide_mouse_cursor
.xref _d_option,_ms_pos_x,_ms_pos_y
TEXTVRAM equ $e0_0000
CRTC_R21 equ $e8_002a
NEXT_LINE equ 128 * éPâëâCâôéáé╜éΦé╠âoâCâgÉö
MC_ADR equ TEXTVRAM+$60000+NEXT_LINE*358+34*2
MC_BIT equ 2
MC_LINE equ 10
MC_XSIZE equ 18*12
.text
.even
_McInit:
move.l #MC_ADR+(MC_LINE-1)*12*NEXT_LINE,mc_a2
move.w #MC_BIT,mc_d5
clr.w mc_d7
rts
****************************************************************
_McDbPrint: * âfâoâbâOùp McPrint
* -d âIâvâVâçâôé¬ÄwÆΦé│éΩé─éóé╜éτ Mc é╞òWÅÇÅoù═é╔Åoù═
* é╗éñé┼é╚é»éΩé╬ë╜éαé╣é╕é╔ïAéΘ
* in : 8(a6).l = ò\Īé╖éΘò╢ÄÜù±é╠âAâhâîâX
tst.b _d_option
beq McDbPrint_rts
link a6,#0
move.l 8(a6),-(sp)
bsr _McPrint
addq.w #4,sp
unlk a6
McDbPrint_rts:
rts
****************************************************************
_McCursorTop: * âJü[â\âïé≡ìsé╠ɵô¬é╔üié⌐é┬üAé╗é╠ìsé≡âNâèâAüj
movem.l d1/a0-a1,-(sp)
movea.l #MC_ADR+(MC_LINE-1)*12*NEXT_LINE,a0
move.l a0,mc_a2
move.w #MC_BIT,mc_d5
clr.w mc_d7
suba.l a1,a1 * âXü[âpü[é╔
IOCS _B_SUPER
move.l d0,-(sp)
moveq.l #12-1,d0
moveq.l #0,d1
1: move.l d1,(a0)+
move.l d1,(a0)+
move.l d1,(a0)+
move.l d1,(a0)+
move.l d1,(a0)+
move.l d1,(a0)+
move.l d1,(a0)+
move.b #$02,-1(a0) * èOÿgé≡ò`ëµüiéñéφü[üj
lea.l NEXT_LINE-4*7(a0),a0
dbra d0,1b
movea.l (sp)+,a1
IOCS _B_SUPER
movem.l (sp)+,d1/a0-a1
rts
****************************************************************
_McPrint:
* in : 8(a6).l = ò\Īé╖éΘò╢ÄÜù±é╠âAâhâîâX
link a6,#-2
movem.l d1-d7/a0-a5,-(sp)
tst.b _d_option
beq @f
move.l 8(a6),-(sp)
DOS _PRINT
addq.w #4,sp
@@:
suba.l a1,a1 * âXü[âpü[é╔
IOCS _B_SUPER
move.l d0,-(sp)
clr.w -2(a6) * â}âEâXâJü[â\âïÅ┴é╡é╜âtâëâO
move.w _ms_pos_x,d0
cmpi.w #288+256,d0
blt @f
move.w _ms_pos_y,d0
cmpi.w #356,d0
blt @f
cmpi.w #480+16,d0
bgt @f
st.b -2(a6)
bsr hide_mouse_cursor * microconsole ôαé╔â}âEâXâJü[â\âïé¬éáéΘÄ₧é╠é▌
* â}âEâXé≡Å┴é╖
@@:
movea.l 8(a6),a4 * a4.l = ò\Īé╖éΘò╢ÄÜù±
McPrint_loop:
movea.l mc_a2,a2
move.w mc_d5,d5
move.w #MC_XSIZE,d6
move.w mc_d7,d7
bsr draw1
tst.b -1(a4)
beq McPrint_rts
* ìsé╠ëEÆ[é╔ÆBé╡é╜ or $0a é≡î⌐é┬é»é╜
* cmpi.b #$0a,-1(a4) * cr?
* bne @f
move.l #MC_ADR+(MC_LINE-1)*12*NEXT_LINE,mc_a2
move.w #MC_BIT,mc_d5
clr.w mc_d7
* éPìsâXâNâìü[âïâAâbâv
clr.w CRTC_R21
lea.l MC_ADR,a1
lea.l 12*NEXT_LINE(a1),a0
moveq.l #MC_LINE-1-1,d1
1:
moveq.l #12-1,d0
2: move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
lea.l NEXT_LINE-4*7(a0),a0
lea.l NEXT_LINE-4*7(a1),a1
dbra d0,2b
dbra d1,1b
movea.l a1,a0
moveq.l #12-1,d0
moveq.l #0,d1
1: move.l d1,(a0)+
move.l d1,(a0)+
move.l d1,(a0)+
move.l d1,(a0)+
move.l d1,(a0)+
move.l d1,(a0)+
move.l d1,(a0)+
move.b #$02,-1(a0) * èOÿgé≡ò`ëµüiéñéφü[üj
lea.l NEXT_LINE-4*7(a0),a0
dbra d0,1b
bra McPrint_loop
McPrint_rts:
move.l a2,mc_a2
move.w d5,mc_d5
move.w d7,mc_d7
tst.w -2(a6)
beq @f
bsr show_mouse_cursor
@@:
movea.l (sp)+,a1
IOCS _B_SUPER
movem.l (sp)+,d1-d7/a0-a5
unlk a6
rts
****************************************************************
* éPìsò\Īâïü[â`âô
* æ¼ôxì┼ùDɵé╠é╜é▀âîâWâXâ^ò█æ╢é╚é╡üI
* âXü[âpü[é┼î─é╘é▒é╞
* a4.l é¬ \0 é≡îƒÅoé╖éΘé⌐âhâbâgÉöé¬ d6.w é╔é╚é┴é╜éτïAéΘ
draw1: * in : a4.l = ò\Īé╖éΘò╢ÄÜù±é╠âAâhâîâX
* a2.l = ò\Īé╖éΘ TEXTVRAM ì╢Æ[é╠âAâhâîâX
* d5.w = ò\Īé╖éΘ TEXTVRAM Åπé╠âhâbâgÉö 0~15
* d6.w = ò\Īé╖éΘâhâbâgÉö
* d7.w = âhâbâgÉö
* out : a4.l = ăé╠âAâhâîâX
move.w CRTC_R21,-(sp)
move.w #%11_10000000,CRTC_R21 * âeâLâXâgëµû╩ô»Ä₧âAâNâZâXüiìòé┼ò`ëµüj
draw1_loop:
moveq.l #0,d1
move.b (a4)+,d1 * d1.w = ò╢ÄÜâRü[âh
beq draw1_rts
bpl draw1_ö╝èpæOö╝ * $00~$7f é═ö╝èpæOö╝
cmpi.b #$a0,d1
bcs @f
cmpi.b #$df,d1 * $a0-$df é═ö╝èpîπö╝
* bls draw1_ö╝èpîπö╝
@@:
move.b d1,-(sp) * lsl.w #8,d1 éµéΦæ¼éóé┴é─ùßé╠âäâc
move.w (sp)+,d1 *
move.b (a4)+,d1 * d1.w = ò╢ÄÜâRü[âh
* cmpi.w #$80ff,d1
* bls draw1_éQâoâCâgö╝èp * $80xx é═éQâoâCâgö╝èp
cmpi.w #'êƒ',d1
bcs draw1_æSèpö±è┐ÄÜ
cmpi.w #'ÿƒ',d1
bcs draw1_æSèpæµéPÉàÅÇ
cmpi.w #'Ωó',d1
bls draw1_æSèpæµéQÉàÅÇ
* cmpi.w #$f3ff,d1
* bls draw1_éQâoâCâgö╝èp * $f0xx-$f3xx é═éQâoâCâgö╝èp
bra draw1_next * é▒é▒é╔é═ùêé╚éóânâY
**** ****
draw1_next:
add.w d0,d5
1: cmpi.w #16,d5
bcs 2f
addq.w #2,a2
subi.w #16,d5
bra 1b
2:
bra draw1_loop
draw1_rts:
move.w (sp)+,CRTC_R21 * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
rts
****************************************************************
draw1_ö╝èpæOö╝:
* cmpi.b #$09,d1
* beq draw1_tab
* cmpi.b #$0d,d1
* beq draw1_cr
cmpi.b #$0a,d1
beq draw1_rts
* cmpi.b #$1a,d1
* beq draw1_rts
addq.w #6,d7 * ò╢ÄÜé╠âhâbâgÉö
cmp.w d6,d7
ble @f
subq.w #1,a4
bra draw1_rts
@@:
moveq.l #6,d2 * 12x12 dot
IOCS _FNTADR
movea.l d0,a1 * a1.l = âtâHâôâgâAâhâîâX
move.w d5,d0
lea.l put_6x12_jt(pc),a0
add.w d0,d0
move.w (a0,d0.w),d0
jsr (a0,d0.w)
moveq.l #6,d0 * ò╢ÄÜé╠âhâbâgÉö
bra draw1_next
****************************************************************
draw1_æSèpö±è┐ÄÜ:
draw1_æSèpæµéPÉàÅÇ:
draw1_æSèpæµéQÉàÅÇ:
addi.w #12,d7 * ò╢ÄÜé╠âhâbâgÉö
cmp.w d6,d7
ble @f
subq.w #2,a4
bra draw1_rts
@@:
moveq.l #6,d2 * 12x12 dot
IOCS _FNTADR
movea.l d0,a1 * a1.l = âtâHâôâgâAâhâîâX
move.w d5,d0
lea.l put_12x12_jt(pc),a0
add.w d0,d0
move.w (a0,d0.w),d0
jsr (a0,d0.w)
moveq.l #12,d0 * ò╢ÄÜé╠âhâbâgÉö
bra draw1_next
****************************************************************
.bss
.even
mc_a2: .ds.l 1
mc_d5: .ds.w 1
mc_d7: .ds.w 1